package internal

import (
	"bytes"
	"fmt"
	"github.com/sirupsen/logrus"
	"github.com/spf13/viper"
	"os"
	"text/template"
	"time"
	"webhookadapter/app/controllers"
)

func InitConfig() {
	// 配置文件名称
	viper.SetConfigName("config")
	// 配置文件类型
	viper.SetConfigType("yaml")
	// 读取配置文件的范围
	viper.AddConfigPath("/etc/webhook_adapter/")
	viper.AddConfigPath("$HOME/.webhook_adapter/")
	viper.AddConfigPath(".")
	viper.AddConfigPath("./conf/")
	err := viper.ReadInConfig()
	if err != nil {
		panic(fmt.Errorf("fatal error config file: %w", err))
	}
	// 将配置文件设置到结构体中
	viper.Unmarshal(&AppConfig)
}

func InitLogger() {
	Logger = logrus.New()
	//file, err := os.Create(AppConfig.Log.Path)
	logFileName := AppConfig.Log.Path
	fileWriter, err := os.OpenFile(logFileName, os.O_APPEND|os.O_WRONLY|os.O_CREATE, os.ModePerm)
	if err != nil {
		panic("could not open log file in path " + logFileName)
	}
	Logger.SetOutput(fileWriter)
	Logger.SetLevel(logrus.Level(AppConfig.Log.Level))
	//设置日志时间格式
	Logger.SetFormatter(&logrus.TextFormatter{
		TimestampFormat: "2006-01-02 15:04:05",
	})
	// 输出文件路径函数名称和代码行号，默认是false
	Logger.SetReportCaller(false)
}

// ParseTemplate 解析字符串模板，并返回解析后的内容
func ParseTemplate(text string, data controllers.Alerts) (string, error) {
	// 创建模板
	tplname := "tplname"
	tmpl := template.New(tplname)
	// 解析模板
	tpl, err := tmpl.Parse(text)
	if err != nil {
		return "", err
	}
	// 渲染输出
	result := new(bytes.Buffer)
	err = tpl.Execute(result, data)
	if err != nil {
		return "", err
	}
	return result.String(), nil
}

// UtcToCst utc转cst
func UtcToCst(utc string) string {
	t, _ := time.Parse("2006-01-02T15:04:05.000Z", utc)
	loc, _ := time.LoadLocation("Asia/Shanghai")
	bjTime := t.In(loc)
	return bjTime.Format("2006-01-02 15:04:05")
}
